//导入axios

import axios from 'axios'

//创建新的axios实例
const service = axios.create({
    //公共接口
    // baseURL:process.env.BASE_API,
    // 超时时间，3*1000毫秒
    timeout:3*1000
})

// 请求拦截器
service.interceptors.request.use(
    (config)=>{
        config.headers = {
            'Content-Type' : 'application/x-www-form-urlencoded' //配置请求头
        }
        //从缓存中取出token
        const  token  =" getCookie('token')"
        // 向请求头中添加token,用于校验身份
        if(token)  config.headers.token = token
        const { method,data } = config
        if(method.toLowerCase === 'post'){
            // 若传递过来的参数是对象
            if(data instanceof Object){
                 //数据转化
                config.data = JSON.stringify(data)
            }
        }
        return config;
    }, 
    (error)=> {
        return Promise.reject(error);
    }
)
// 响应拦截器
service.interceptors.response.use(
    (response)=>{
        const {data} = response
        if(data.code === 200 ){
            return response.data;
        }else if(data.code === 401){
            // message.error('身份验证失败，请重新登录！',1)
            return response.data;
        }else{
            return response.data;
        }

    },error => {
        /** 接收异常响应处理开始*/
        if(error && error.response){
            switch(error.response.status){
                case 400:
                    error.message = '错误请求'
                    break;
                case 401:
                    error.message = '未授权，请重新登录！'
                    break;
                case 403:
                    error.message = '拒绝访问'
                    break;
                case 404:
                    error.message = '请求错误，未找到该资源'
                    //window.location.href = '/NotFound'
                    break;
                case 405:
                    error.message = '请求方法未允许'
                    break;
                case 408:
                    error.message = '请求超时'
                    break;
                case 501:
                    error.message = '网络未发现'
                    break;
                case 502:
                    error.message = '网络错误'
                    break;
                case 503:
                    error.message = '服务器不可用'
                    break;
                default:
                    error.message = `连接错误${error.response.status}`
            }
        }else{
            //超时处理
            if(JSON.stringify(error).includes('timeout')){
                Message.error('服务器响应超时，请刷新页面')
            }
            error.message = '连接服务器失败'
        }
        Message.error(error.message)
        /** 处理异常结束 */
        // 如果不需要错误处理，以上的处理过程都可省略
        return Promise.resolve(error.response)
    }
)
// 导出文件
export default service;
